1. Field of the Invention
This invention relates generally to a system for scaling and filtering video data and more specifically to methods and techniques for accelerating scaling and filtering operations on digital video.
2. Description of the Related Art
Manipulation of video data, including scaling and filtering pixels, can be time-consuming. Digital video is made up of many megabytes of pixel data per second of video. Uncompressed, high-definition video taxes even the fastest computer systems due to large image sizes and fast frame rates.
In a system designed to manipulate digital video data, there are many operations that would be valuable if they could be performed on a video data stream. For instance, someone watching a digital video stream might want to scale the video up to fill the screen, or scale the video down to occupy only a corner of the full screen, displaying it as a video thumbnail.
Scaling requires the creation of new video pixels based on existing pixel data. Video consists of a series of frames or images, so in order to scale video; the individual images must each be scaled. When an image is scaled, the value of the new pixel in the scaled image is based on the values of one or more existing pixels in the original image. There are many different ways to calculate the value of the new pixel. Typically the new pixel value is based on the values of one or more original pixels that are in the neighborhood of the new pixel. In any case, the pixel value calculation can be formulated as a linear equation that depends on many original pixels. The difference between the different scaling calculations is ultimately just a difference in the coefficients of the linear equation.
Someone editing or composing a new video stream out of several video clips might desire to modify individual clips. For instance, certain video effects might be used in the clips, like eliminating the color to make a clip black & white, scaling or blurring the video, or adding some other effect or filter.
Filtering operations are similar to scaling operations in that a new pixel value is based on one or more original pixel values. Different filters cause the new image to appear as a blurred version of the original image. Another filter might sharpen the image by enhancing the edges that appear in the image data. Contrast and brightness can be adjusted using filtering operations, as well as changes in color saturation.
As in all computer systems, when editing video, the faster the video system can process the video stream, the easier it is to edit the video. Delays introduced while waiting for filtering or scaling operations to be performed slows down the editing process. Scaling of a video to fit a certain size is most useful when it can be done at actual video speeds or faster. When the scaling operation happens at slower than video speeds, it is virtually useless because the video can't be viewed on a computer until after the entire video is scaled to fit the screen.
Prior art solutions exist which provide video scaling and filtering in real time. Existing solutions provide scaling and filtering operations as separate operations on the same processor chip or separate chips. Separate operations require additional buffers, increasing both the die size and the energy requirements of the chip, as well as potentially impacting the operational speed. However, it does allow the scaling operation to be performed in parallel by the other hardware during the same time period. Such an approach provides improvements in the time required to scale and filter the image. Alternatively, existing prior art systems might reduce hardware logic requirements by using one set of logic gates for performing both filtering and scaling, but performing those operations in series instead of parallel. However, while such series calculations reduce hardware, they increase the time required to perform both operations.
What is needed is a system that provides the scaling and filtering operations simultaneously on video data streams. What is further needed is a reduction in the size and power requirements of the video manipulation hardware by allowing logic hardware and memory buffers to be shared between different functions in the system.